{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "621293c2",
   "metadata": {},
   "source": [
    "#### 多因子03因子预处理-20231020-ROE因子预处理-财务因子\n",
    "\n",
    "20231020-ROE因子预处理-财务因子<br>\n",
    "https://www.bilibili.com/video/BV1wr4y197dx"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a64e9e5f",
   "metadata": {},
   "source": [
    "## 因子预处理\n",
    "\n",
    "https://www.wolai.com/stupidccl/3QzCwVcyRScvSt9nUugzQG"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "260540e9",
   "metadata": {},
   "source": [
    "## <font color=\"red\">ROE</font> 因子预处理-<font color=\"green\">财务</font>因子"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1b059a8d",
   "metadata": {},
   "source": [
    "净资产收益率(Return on Equity，ROE)，又称股东权益报酬率，<br>\n",
    "不仅是一个很好的指标，而且是一个长期有效的指标，<br>\n",
    "甚至可以说其意味着**价值投资**的本质。<br>\n",
    "ROE高说明公司在创造价值，是实打实地在向社会输出自己的产品，同时换回相应的回报。<br>\n",
    "\n",
    "下面以ROE因子为例，介绍一下**财务类因子**的计算方法。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7fff5a9",
   "metadata": {},
   "source": [
    "### 什么是ROE？\n",
    "\n",
    "$$\n",
    "ROE=\\frac{最近12个月(TTM)净利润}{0.5×最新一期财报股东权益+0.5×上年同期股东权益}\n",
    "$$\n",
    "  - 分子为最近12个月**滚动净利润**\n",
    "  - 分母为最新一期财报的股东权益和去年同期财报股东权益的**均值**\n",
    "  - 计算出的ROE称为：**TTM的ROE**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "69c81c16",
   "metadata": {},
   "source": [
    "**什么是TTM？**<br>\n",
    "TTM——Trailing Twelve Months，即最近12个月\n",
    "\n",
    "我们知道企业生产、社会活动在很大程度上会受到季节性和节假日因素的影响，<br>\n",
    "因此在计算经济金融数据的时候，一定要考虑计算过程中是否存在这一类因素。<br>\n",
    "例如，当我们考察国内一家啤酒生产企业的时候，恰好拿到的是该企业的第三季度财报。<br>\n",
    "如果简单将该啤酒企业三季度财报中的营收和净利润乘以4来衡量该企业全年的营收和净利润，则会明显高估该公司的盈利能力。<br>\n",
    "这是因为啤酒的消费主要集中在夏天，也就是第三季度。<br>\n",
    "\n",
    "此外，节假日也会对单季度或单月份的财务数据造成一定的影响。<br>\n",
    "例如，春节就会使得一季度的生产水平往往处于低点。<br>\n",
    "\n",
    "弥补这种季节性数据影响的最好方法就是追溯过去12个月的数据，并进行相加，作为一个整体来考察。<br>\n",
    "对于财报而言则是追溯过去4个季度，然后相加。<br>\n",
    "将过去12个月或4个季度的数据累加求和作为某一财务指标，就可以称其为“某指标的TTM”。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "49d7516e",
   "metadata": {},
   "source": [
    "### 如何处理ROE因子"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4949c81d",
   "metadata": {},
   "source": [
    "#### 数据观察"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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6zt37hw+fPh3vvOdv/qrvxo1atTWrVvXrFlTyVtCoLamevJzC+78edkPny6/4+fljz9XNnVG2fhflN/21JyXFi5bX1u9LnEJN2QVqKqqWrt27WuvvVZVVZX1Ws73LlBTU7NkyZIVK1ZUV1f3fpJ7MwlUV1cvWrRo9erVPGgzuUUPV1dXr1y58vXXX+cRG7XKdKC6unr58uXLli2rqanJdCGHexeoqqpat27da6+9VllZyXsDb7V27dq333574sSJ9tPOvD4tPvvmkli5/52fc845/ut8/lc655xzDh48OH78+AcffNA5t2TJkiFDhhSLxfPOO2/Pnj3Oueuuu+5nP/tZ6btYHR0dhw4dcs499dRT/rtbLS0tBd66C7S1tzvXOejR5f91TNn/M37efxk3718fK//WlIr/fvv8P7l51jMrtzvnWtrau1/ELrNAsVg8fvz4unXrisVi5ou5oGeB9pMPYLdp06bdu3c759rbeaz2jJXlnvb29q6ururq6oMHD3Z2dma5lLO9CXjY9957r76+nkdsb1IZ7/PvCrZv3/72228DmxEvcrxYLLa2tq5du7atrS1y9Ky5u7W11Tn38ssv812sPGKAxBKr+m9Av/fee/fee+9zzz03atSoq666qqmpacKECc8999zw4cOvvfZa51xtbe15553305/+dMCAAf5HsO67776hQ4c+9NBDX/va1w4cOJB86sXzzz//ox/9yDnnnzsr/n1/xMedep6gO/VEwfI/u33+H91y6omCkys+PXbB7334RMEOfhRL8bdcKBT4WSwF5BlmvPXWW++9994Z7uCm/gnU1dWVXr61f5O4uptA6YmC3W5l02+BnTt37tixo99jGBAK8ETBQKT0RMHx48eXnjwVnGHbZwESq890Z77QJ1ZLS8tzzz03adKkZ599tqWlpVgsTps2bdKkSS+//HLpRSzWr18/ceLExYsXl2rq5ZdfnjRp0q5du0rfwvK/Bq8oeGZrcyuvKGgw8l3ychd5+Pr3G/wsltzWw/KzWDnB8qLtOcHys1hyWD+Ql7sIYHm5iwBEuyWxtJ5pp5VCq1RT/lMBf729t/RtK15RsBdcm1h/bl+0fax90Xb/va5exnBXXICXu4gbZT9BYmU3S3UFiZWKKfshD0tiZZeLXOFhSawIU1/vJrECORIrANFuSSyt5+lp/odVisWif48Z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c+DAgcVicfTo0WPGjHHODRkyZOrUqYcPHz7nnHPq6ur27t37hS98obGx8eWXXx4wYID/bdnvZZWXlz/44IPi3+7Ha9x5U1b+7sjy/3Ps/P/9hnnfebjikgcrPnHLgt/511m/XL374/UH/U3+abq6umpqan6Tv4OP76/99ttv79+//+P75/uN/cnq6+tbWlp+Y7/8x/cXPnz48ObNmz++f77f2J/snXfe2blz52/sl/9Y/8LV1dUf6z9fX/5wc+fOHT9+PInVF7teryGxeuXp0522i6qrqwcOHOic+/73vz9jxgzn3Pr16wcPHrxv376vfvWrx48fd87dc889P/3pT2fNmnX99df7X3DAgAENDQ1+ffDgwWeeeeaFF1644oor7rjjjqNHj27fvn0nb90FGpua9u7ZffMvFv3Lg2XffrjiG5Mqfvh0+W0/Kx88ee7FE2c/t7j6/ff27Ghs6n4Ru8wCu3bt2r59+/Lly3ft2pX5Yi7oWaCpqWnPnj1r1qypr69/5513mpp4rPaMleWepqamd955Z8WKFW+99dbu3buzXMrZ3gSampp27969cePGVatW8YjtTSrjff5dQXV1dVVV1Z49e3hXkNEvcryxsXH58uWolpgaGxsPHz78xBNP3HXXXSRWnz7l7+0iEqs3nT7f57/Zun///vPOO2/ZsmXOue9+97vl5eXOufr6+qFDhzY0NAwYMKCtrc05N2nSpEceeeTZZ58dO3asf47QpZde6p+L5Zzbv3//Y4899uSTT1522WW33XbbwYMHt2zZsp237gJbt23b1bRj3C9f+9ZDZVdNrRj6UMV908on/KJ82MNzL5s0+/nXK/fubnp767buF7HLJrBt20nALVu2LFu2bPv27X6bbQSnexDYtm1bU1PTqlWramtrGxsbse3BKfPN27Zta2xsfOONNzZt2rRjxw5gMwv2cIGHra+vX7lyZVNTE7A9OGW+2b8rqKysXLt2LbCZ+Xq+wD9Et27dunTpUr/mQbt9+/a33377/ffff+yxx0isPn/C38uFJFYvOH28yz+X+vjx45dddtny5cv9lFGjRk2dOtU5t2rVqksvvbStre3LX/7yvn37nHM333zz9OnTFy1aNGzYMJ9Y559//u7dJ5/b5kf5CRUVFTxRsPe/kvMeWvkfPnyi4LCHKy5+sOI/nnqi4NOr3+n9Qu7NJMAT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hc62mR62tra2ubn5bPuz5/rn9bD79+/fsGEDj1ghtYdtamravn07sEJYP4rECkhJrABEuyWxtJ49TvPvN51znZ2dwftNf4v/X3996bDfklg9sn54B4n1oUTu/09i5UHs/5MnseS2HpbEygmWxMoJlsSSw/qBJFYAS2IFINotiaX1PD2tubl5x44d9kunO3bs2LlzZ6myisXixo0bjx496pzzj/L9+/c3NDT4EbaySKzTrD2sbGJ99vb5nxw17+qpFUMmV3xm7IJPjJw1bVWTc67Y0dXD1dycQYDEyoCV+iiJlZoq20ESK5tX6tMelsRKDZb2oIclsdJ6ZTxHYgVgJFYAot2SWFrPD57wUygUJk+e/Jd/+Zc33HCD/wWmTJlyySWXDBw48Mknn3TOHTx4cNiwYZdffvkll1yyadMm59yrr7564YUXDh48+KabbvKX+He1XV1dbW1tzrnp06dPnDjROVcoFD58EiL//4FAR8fJ7w1eNHXFp0eV/4875n9q9LxrHq247KGKPx234A9vmDXtzcaTbsUOvPop4JxrbW2trKz0Xyno5zQuLwn4b2I3NDS8++672JZY+r/wsLW1tUeOHAG2/56lCR62lFidnZ2lu1j0R8DDNjY2+icKAtsfzOS1xWKxsrKyo4NPBj6wKRaLzrnZs2dPmDDh5FeiT23FnxafxeNIrFz+8guFgnPupZdeuvLKK51zO3bs+Md//Mfjx48fPnz47/7u71pbW6dOnXrttdc655588snhw4c7577yla8sW7bMOXfxxRdXVFSUPhso/f7KysoefPDB0pZFUuDLU1b+7siyz4yd/+9vnPedhysuebDiE7cs+Dffn/X06t3Jw9zSN4Gurq6ampq+XctVvQu8/fbb+/fv7/0M9/ZBoL6+vqWlpQ8XcknvAocPH968eXPvZ7i3DwK7d+9uajr55Ave5ALV1dXymR/1gXPnzh0/fjyJJf97JLHkpCcHlr736vNpzpw5V111lf+Vhg0btmbNmhtuuGH27NnOuY0bN15++eVbt24dOHDgsWPHnHOTJk265557So/1PXv23HLq7ZxzzhkzZszOnTtramrqeesuUFdfv3njhvtnLLzpibKxT1Xc+ET5wzPKJk0vv+XJipE/mf3iqyu3bN5YV9f9GnbZBdavX19bW/v666+vX78++9Vc0ZvAxo0bly9fvnr1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X9LED5Ekpwf32PDCCoRhg51JQtS4qxlWCks6l4RPadyH/pGdFWYJLgkv7HV3YIP6/ZHJRH11HMZAO/i44UuCd7FAIFEBEitRMfb/AAQqKiqysrJSU1OzsrIqKyv5bJTobWY/D+3atatt27YDBgzo2rVrfn6+MWbGjBmpqanDhw+/fPmyMebEiRODBw9OS0tbuHAhyPUg20/blZWVc+fOvfPOO+3L4xpj1q1b17Vr1169etl/zbmqqmrq1KmpqaljxoyxrzFYWFjYr1+/Ll26LF26FOFaha3t7t27e/XqlZqaeu7cOWPM66+/3rp16379+j344IOXLl0yxnz88cc9evTo1q3b1q1b7Zxnn302LS3tkUcesRt4alUr74wZM/r27duzZ8/Vq1fbDcuXL7/33nvvu+8++5hQVlY2fvz41NTUSZMm2QfbvLy83r1733vvvfYU50ltrR8lqS60IJ999tmAAQP69Onz2GOP2YfT+fPnt23btm/fvo8++qj9679x48Zu3bqlp6fv3LnT/l7Wb37zm9TU1IyMjGvXrvGA4NxtAthBgwZ179597NixJSUlsVhs4sSJqamp48aNsy+DefDgwb59+3bp0mX58uV2wuLFizt37jxw4ED7zz3zUODActhoARKr0XSceCsK2F9jnT179sCBA40xgwYNmjt3bvBDQbfin/iW/DNZxjVr1nTp0qWiosL+49fLli1LS0urrq6eMGFCZmamMaZ3797z5s0rKSlp1arVp59+inP9N2ZZWdmxY8eeeOKJYcOGGWNOnTp11113FRQUbN68+e677zbGvPrqqz179ozH448++uj06dONMampqW+99VZRUVHz5s3tM1o+/TvIFuTEiRN79uxp3rz5l19+aYyZOHHiuHHjglcLKC0tbdGixSeffJKXl9esWbNYLLZ27doOHTpUVlZOmTJl5MiRwU5neJIfxmKxTZs2nT17trCwsFmzZpcuXTp+/HizZs1Onjy5cuXK9u3bG2NmzZo1ePBgY8zAgQPnzZtnjGnbtu3atWuPHTt21113nThxghJw7kW2BAoKCnbs2BGLxUaNGjVlyhRjzPDhw+3feruhuLj4rrvu2rdv3/bt21u0aGGMWbJkSbdu3WKxWEZGxqRJk/iHYh1Y+1BQdPPNGNO/f/8FCxa8+eabvXv3NsY8+OCDTz/9tDGmQ4cOS5cuPXPmzJ133nn69OmDBw82b9784sWLCxcu7NmzJ5/FHFUOmyJAYjVFj3NvOQHbBn369LH/sNiHH37Yr18/HjQTvZ3s5/jt27e3a9duwIABQ4cONcZkZGQsWbLEGHPw4MEePXqcO3cuJSXFvvrlzJkzn3rqKZ6n1u9s75zvvvvur3/9a2PMihUrHnzwQXtK165dDx8+PHTo0A8++MAYs3Pnzv79+588ebJDhw72rAkTJtjvfdmbpv4PlGzvDbKzY8eOX331lTHmpZdeat++fd++fZ988kljzEcffWSfPBlj+vXrt2PHjsmTJ7/++uvGmOPHj3fs2LGiooISqOduU1NT06ZNm7KysrffftsWaXV1dVpa2smTJ/v375+bm2uM2bRp00MPPXTkyJHU1FQ7avjw4fb1BrnTOrYS5Omnn546daqN1Y4dO953332zZ8+23+K2Xyg0xqSnp3/xxRejRo1asWKFMebAgQNdunSxM4M7v/MhkvPQwh4/fnzp0qVDhgzZt2/fQw89tGHDBvt97EGDBp06dcp+acAYM3r06Pfee2/hwoU2ccvKytq3b3/mzBmeMCTnnSeKa01iRaHKzO9NwD7C9uzZ037W/+ijj/r06cMjZuNuj5KSkuLi4lgsNmLEiBkzZmRkZNh/tenAgQN9+vQ5dOhQx44d7Te45s6da58l2B5o3If70Z9VXV1tjFm8ePEjjzxijHnttdcyMjKMMZWVlX379t2zZ8/999+/bds2Y8xnn302aNCgffv2devWzT77nz59uv2nSBGu9X4Si8VqampSUlJsYhUXF3/77bdXr17t0KHDxo0bt27d2r9/f3viQw89tGnTpgkTJrz99tv2h13T0tKuXLlCYoVhgxdg6Nevn/1nmubMmTN58mRjTElJSc+ePffv39+nTx/7zzr/7ne/Gzp06O7du4OaHTdu3KuvvspXXsKwxpiqqipjzIYNG1JSUuzd78KFC/Yht3Xr1jt37ly9erX92lY8Hh84cGBubu6IESPWrl1rjMnPz7/33nvtYy+JJXmtxq5du0aOHNmpU6fCwsL+/fvbf75l+/bt999//xdffNG5c2d7yqRJk5YsWfLCCy/MnDnTGHPt2rXOnTvbb4PLBpbzWSOQkACJlRAXm291AfssduDAgfbHrFesWDFkyBASqxE3m/wcs23btmHDhj3++OP2adauXbu6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4QgggAACCCCAAAIIIJBcAiRWct3eXFsEEEAAAQQQQAABBBCIVIDEipSX4QgggAACCCCAAAIIIJBcAiRWct3eXFsEEEAAAQQQQAABBBCIVIDEipSX4QgggAACCCCAAAIIIJBcAiRWct3eXFsEEEAAAQQQQAABBBCIVIDEipSX4QgggAACCCCAAAIIIJBcAiRWct3eXFsEEEAAAQQQQAABBBCIVIDEipSX4QgggAACCCCAAAIIIJBcAiRWct3eXFsEEEAAAQQQQAABBBCIVIDEipSX4QgggAACCCCAAAIIIJBcAiRWct3eXFsEEEAAAQQQQAABBBCIVIDEipSX4QgggAACCCCAAAIIIJBcAiRWct3eXFsEEEAAAQQQQAABBBCIVIDEipSX4QgggAACCCCAAAIIIJBcAiRWct3eXFsEEEAAAQQQQAABBBCIVIDEipSX4QgggAACCCCAAAIIIJBcAiRWct3eXFsEEEAAAQQQQAABBBCIVIDEipSX4QgggAACCCCAAAIIIJBcAiRWct3eXFsEEEAAAQQQQAABBBCIVIDEipSX4QgggAACCCCAAAIIIJBcAiRWct3eXFsEEEAAAQQQQAABBBCIVIDEipSX4QgggAACCCCAAAIIIJBcAiRWct3eXFsEEEAAAQQQQAABBBCIVIDEipSX4QgggAACCCCAAAIIIJBcAiRWct3eXFsEEEAAAQQQQAABBBCIVIDEipSX4QgggAACCCCAAAIIIJBcAiRWct3eXFsEEEAAAQQQQAABBBCIVIDEipSX4QgggAACCCCAAAIIIJBcAv8PIum/EU1frDIAAAAASUVORK5CYII="
    }
   },
   "cell_type": "markdown",
   "id": "c1cfb8a9",
   "metadata": {},
   "source": [
    "import pandas as pd<br>\n",
    "import numpy as np<br>\n",
    "import matplotlib.pyplot as plt<br>\n",
    "import statsmodels.api as sm<br>\n",
    "import warnings<br>\n",
    "warnings.simplefilter(action=\"ignore\", category=Warning)<br>\n",
    "\n",
    "roe_factor = pd.read_hdf('factors/data/roe.h5')<br>\n",
    "roe_factor = roe_factor.query(\"data_date=='2019-05-27'\")<br>\n",
    "roe_factor['roe'].hist(bins=100, figsize=(18, 9))<br>\n",
    "plt.show()<br>\n",
    "\n",
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "489f0148",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import statsmodels.api as sm\n",
    "import warnings\n",
    "warnings.simplefilter(action=\"ignore\", category=Warning)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "11274a6f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data_date</th>\n",
       "      <th>secucode</th>\n",
       "      <th>roe</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2013-01-22</td>\n",
       "      <td>000001.SZ</td>\n",
       "      <td>4.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2013-01-22</td>\n",
       "      <td>000002.SZ</td>\n",
       "      <td>2.43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2013-01-22</td>\n",
       "      <td>000004.SZ</td>\n",
       "      <td>0.49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2013-01-22</td>\n",
       "      <td>000005.SZ</td>\n",
       "      <td>2.49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2013-01-22</td>\n",
       "      <td>000006.SZ</td>\n",
       "      <td>2.46</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>89035</th>\n",
       "      <td>2020-02-12</td>\n",
       "      <td>688188.SH</td>\n",
       "      <td>5.82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>89036</th>\n",
       "      <td>2020-02-12</td>\n",
       "      <td>688321.SH</td>\n",
       "      <td>0.34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>89037</th>\n",
       "      <td>2020-02-12</td>\n",
       "      <td>688333.SH</td>\n",
       "      <td>4.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>89038</th>\n",
       "      <td>2020-02-12</td>\n",
       "      <td>688368.SH</td>\n",
       "      <td>8.98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>89039</th>\n",
       "      <td>2020-02-12</td>\n",
       "      <td>688388.SH</td>\n",
       "      <td>5.27</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5149011 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        data_date   secucode   roe\n",
       "0      2013-01-22  000001.SZ  4.30\n",
       "1      2013-01-22  000002.SZ  2.43\n",
       "2      2013-01-22  000004.SZ  0.49\n",
       "3      2013-01-22  000005.SZ  2.49\n",
       "4      2013-01-22  000006.SZ  2.46\n",
       "...           ...        ...   ...\n",
       "89035  2020-02-12  688188.SH  5.82\n",
       "89036  2020-02-12  688321.SH  0.34\n",
       "89037  2020-02-12  688333.SH  4.03\n",
       "89038  2020-02-12  688368.SH  8.98\n",
       "89039  2020-02-12  688388.SH  5.27\n",
       "\n",
       "[5149011 rows x 3 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roe_factor = pd.read_hdf('./data/roe.h5')\n",
    "roe_factor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "7d73f452",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data_date</th>\n",
       "      <th>secucode</th>\n",
       "      <th>roe</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>341148</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000001.SZ</td>\n",
       "      <td>3.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>341149</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000002.SZ</td>\n",
       "      <td>0.72</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>341150</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000004.SZ</td>\n",
       "      <td>4.78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>341151</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000005.SZ</td>\n",
       "      <td>-1.20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>341152</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000006.SZ</td>\n",
       "      <td>1.77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>344803</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>688122.SH</td>\n",
       "      <td>1.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>344804</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>688139.SH</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>344805</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>688333.SH</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>344806</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>688368.SH</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>344807</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>688388.SH</td>\n",
       "      <td>10.77</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3660 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         data_date   secucode    roe\n",
       "341148  2019-05-27  000001.SZ   3.03\n",
       "341149  2019-05-27  000002.SZ   0.72\n",
       "341150  2019-05-27  000004.SZ   4.78\n",
       "341151  2019-05-27  000005.SZ  -1.20\n",
       "341152  2019-05-27  000006.SZ   1.77\n",
       "...            ...        ...    ...\n",
       "344803  2019-05-27  688122.SH   1.85\n",
       "344804  2019-05-27  688139.SH    NaN\n",
       "344805  2019-05-27  688333.SH    NaN\n",
       "344806  2019-05-27  688368.SH    NaN\n",
       "344807  2019-05-27  688388.SH  10.77\n",
       "\n",
       "[3660 rows x 3 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roe_factor = roe_factor.query(\"data_date=='2019-05-27'\")\n",
    "roe_factor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "ea9d33f1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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CwAAALABnDA29MyR6cc3TV+d5Pok907r9ya5Ybp8fZJ93f1qdz+X5GCSq6vqgiRv6e5HuruTfHHFPgAAAMAmUbN/959go9krE55I8q+TfLa7P1FV3+/ut63Y5nvdfX5VfSbJo939pWn97iQPJjmU5I7uft+0/p4kn+juX5vz+3Zn9gqIbNu27ap9+/ad4t1kLR14/gdz17dtSV760ezyFRe+dQ2PiI3kyJEj2bp163ofBhuAWWCJWWCJWSAxBywzCxvfzp07n+juHfOuO3c1N9DdryW5sqreluTLVfWu42w+7zwMfZz1eb9vb5K9SbJjx45eWFhYzWGyQdy854G567decTR3HpiN3KEPLazhEbGRLC4uxt80iVlgmVlgiVkgMQcsMwtntjf0aRTd/f0ki5mda+Gl6a0Rmb6/PG12OMlFK3bbnuSFaX37nHUAAABgE1nNp1G8c3pFQ6pqS5L3Jfl2kvuT3DRtdlOS+6bL9yfZVVXnVdUlmZ0I8rHufjHJK1V1zfQpFDeu2AcAAADYJFbzNooLktw7nbfhJ5Ls7+6vVNUjSfZX1UeSfDfJB5Kku5+qqv1Jnk5yNMkt09swkuRjSe5JsiWz8zg8OPLOAAAAAOvvhLGhu7+Z5BfmrP99kvceY5/bk9w+Z/3xJMc73wMAAABwhntD52wAAAAAOBGxAQAAABhKbAAAAACGEhsAAACAocQGAAAAYCixAQAAABhKbAAAAACGEhsAAACAocQGAAAAYCixAQAAABhKbAAAAACGEhsAAACAocQGAAAAYCixAQAAABhKbAAAAACGEhsAAACAocQGAAAAYCixAQAAABhKbAAAAACGEhsAAACAocQGAAAAYCixAQAAABhKbAAAAACGEhsAAACAocQGAAAAYCixAQAAABhKbAAAAACGEhsAAACAocQGAAAAYCixAQAAABhKbAAAAACGEhsAAACAocQGAAAAYCixAQAAABhKbAAAAACGEhsAAACAocQGAAAAYCixAQAAABhKbAAAAACGEhsAAACAocQGAAAAYCixAQAAABhKbAAAAACGEhsAAACAocQGAAAAYCixAQAAABhKbAAAAACGEhsAAACAocQGAAAAYCixAQAAABhKbAAAAACGEhsAAACAocQGAAAAYCixAQAAABhKbAAAAACGEhsAAACAoU4YG6rqoqr6i6p6pqqeqqrf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\n",
      "text/plain": [
       "<Figure size 1296x648 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "roe_factor['roe'].hist(bins=100, figsize=(18, 9))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "facc57d8",
   "metadata": {},
   "source": [
    "从ROE分布来看，ROE的原始数据有很大的问题：存在极大的ROE数值且有负的ROE值。<br>\n",
    "我们知道在计算ROE值的时候，净利润部分可能为负数，导致最后ROE是一个负值。<br>\n",
    "对于ROE数值为负的公司我们需要差别对待。<br>\n",
    "有的公司可能是科技成长型公司，前期就处于亏损状态，<br>\n",
    "在这种情形下，ROE为负就不应该是公司的扣分项，当然也不应该是加分项，所以可以设置其因子值为0；<br>\n",
    "而有的公司是由于业绩不好、经营不善导致的亏损，这个时候，就应该将这些公司的因子值变为压缩后的最小阈值<br>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2ed783ea",
   "metadata": {},
   "source": [
    "### 去极值-压缩\n",
    "（去极值—标准化—市值中性化）<br>\n",
    "从ROE分布来看，ROE的原始数据有很大的问题：存在极大的ROE数值且有负的ROE值。<br>\n",
    "我们知道在计算ROE值的时候，净利润部分可能为负数，导致最后ROE是一个负值。<br>\n",
    "对于ROE数值为负的公司我们需要差别对待。<br>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5b01f520",
   "metadata": {},
   "source": [
    "np.clip 是 NumPy 中的一个函数，用于剪辑数组元素的值。\n",
    "\n",
    "我们首先创建了一个包含五个浮点数的数组。然后，我们定义了剪辑的 lower 和 upper 边界。<br>\n",
    "接下来，我们使用 np.clip 函数剪辑数组，将数组中的元素限制在指定的范围内。<br>\n",
    "最后，我们输出剪辑后的数组。<br>\n",
    "\n",
    "注意：np.clip 函数返回一个新数组，原始数组不会被修改。<br>\n",
    "如果需要对原始数组进行修改，可以使用数组切片或将剪辑后的数组赋值回原始数组。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "7785681c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1296x648 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "roe_factor['roe'] = np.clip(roe_factor['roe'], 0, 30)\n",
    "roe_factor['roe'].hist(bins=100, figsize=(18, 9))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "085adee4",
   "metadata": {},
   "source": [
    "### 标准化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "3beedbe5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1296x648 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def standard_normalize(series):\n",
    "    # 计算均值和方差，z_score标准化\n",
    "    mean = series.mean()\n",
    "    std = series.std()\n",
    "    return (series - mean) / std\n",
    "\n",
    "roe_factor['roe'] = standard_normalize(roe_factor['roe'])\n",
    "roe_factor['roe'].hist(bins=100, figsize=(18, 9))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b1d8e232",
   "metadata": {},
   "source": [
    "该分布虽然不像市值因子的分布那样具有较好的对称性，但是这一数据处理的结果隐含着投资者的投资观点。<br>\n",
    "例如，ROE最高限度30%的选取与我国资本市场近十几年来具有长期稳定高ROE公司的ROE平均水平相一致。<br>\n",
    "ROE超过30%的公司，通常是周期行业在周期顶部形成的不可持续的ROE，很难保证公司一直处于高ROE状态。<br>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d0a80fad",
   "metadata": {},
   "source": [
    "### 市值中性化\n",
    "\n",
    "行业中性化解决了不同行业间因子值天然存在差异的问题。<br>\n",
    "同样地，引入市值因子的中性化是为了避免市值因子对因子本身的影响。<br>\n",
    "行业特性会影响因子，而市值或者说公司的规模也会影响因子。<br>\n",
    "例如在同一个行业中，大市值的公司和小市值的公司往往体现出不同的特征。<br>\n",
    "公司规模大往往借贷成本低，同时相对于行业中的其他公司来说处于较为成熟的时期，估值相对会较低。<br>\n",
    "当我们对因子进行“行业+市值”的中性化之后，就可以剔除“公司所处行业”和“公司规模”这两个因素对因子本身的影响。<br>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "527af339",
   "metadata": {},
   "source": [
    "<font color=\"red\">**中性化的方式是对因子暴露值和市值、行业做线性回归，最后用剩下的残差替代因子值。这个残差肯定是跟市值和行业无关的**</font>  \n",
    "\n",
    "$$\n",
    "Factor _{i}=\\beta_{M} * \\ln \\left(\\right. MktVal \\left._{i}\\right)+\\sum_{j=1}^{n} \\beta_{j} * Industry _{j, i}+\\varepsilon_{i}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fc9782fc",
   "metadata": {},
   "source": [
    "trading_data_2019 = pd.read_csv('factors/data/2019_trading_data.csv')<br>\n",
    "sub_trading_data = trading_data_2019.query(\"data_date=='2019-05-27'\")<br>\n",
    "sub_trading_data['size'] = np.log(sub_trading_data['mv'])<br>\n",
    "\n",
    "def filter_extreme_by_sigma(series, n=3):<br>\n",
    "    # 计算均值<br>\n",
    "    mean = series.mean()<br>\n",
    "    # 计算方差<br>\n",
    "    std = series.std()<br>\n",
    "    # 计算上下限的值<br>\n",
    "    max_value = mean + n * std<br>\n",
    "    min_value = mean - n * std<br>\n",
    "    return np.clip(series, min_value, max_value)<br>\n",
    "\n",
    "sub_trading_data['size'] = filter_extreme_by_sigma(sub_trading_data['size'])<br>\n",
    "sub_trading_data['size'] = standard_normalize(sub_trading_data['size'])<br>\n",
    "\n",
    "def industry_and_size_neutralization(factor_df, factor_name):<br>\n",
    "    result = sm.OLS(factor_df[factor_name], factor_df[list(factor_df.ind_code.unique()) + ['size']], hasconst=False).fit()<br>\n",
    "    return result.resid<br>\n",
    "\n",
    "sub_trading_data = pd.concat([sub_trading_data, pd.get_dummies(sub_trading_data['ind_code'])], axis=1)<br>\n",
    "roe_neuted_df = pd.merge(sub_trading_data, roe_factor[['secucode', 'roe']])<br>\n",
    "roe_neuted_df['roe_neuted'] = industry_and_size_neutralization(roe_neuted_df, 'roe')<br>\n",
    "\n",
    "\n",
    "roe_neuted_df['roe_neuted'].hist(bins=100, figsize=(18, 9))<br>\n",
    "plt.show()\n"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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PfDAA319fbt27brppptuvPHGH/7wh5WVlUqp48ePP/jggz/4wQ/KyspSngv6+vqUUi+++OKMGTMG3kXp60um/dLC1tjY2NLSokulDc/nnUaxPjCu9OKSAU2KfLuwOPbJyQvPm7jgryYuOO/U7ZOTFn5wfOk1T6xWSvUn3iOpR1BTU9Pe3p2oVzEAACAASURBVF7gI3gPStjVgPQmEhUVFfpHSNjmdBsgoJQyipUYuHYMX6EJKKWMYjGC0PRPPgSMYsE/PH/9g7i5uXn79u36J0L4YxjlHfXPx9LS0mnTpiml4vH4iK9l2ZE9ARQre2ZZZuiXGvv27Vu5cuWRI0fGjx8/ffr0jRs3Xn755e+8805ra2tHR4dSavLkybfcckt9ff0Xv/jFDRs26KeDwa3mzp07c+bMwVvSr5uamvbt25c+pkD2Ti3b8ue3lP510aKPT4y53M6dGDt3Uvng219NLj97fNk1T64dlmRdXV1XV9ewu9gYhkBVVVWYRnQZlkB3d3dtbe2wu9gYhsD+/fv168sw7eiSQuDYsWP19fUpG7kbkkBra+vOnTtDdjzjei1YsGDq1KkolvfBoVjekQ5TUFtWb2/v7t27p0+f/uyzz7799tuf//znb7nlll/84hf9/f2JROKKK65obm5WSv3yl7/U/5yg/3Whq6tr9erVNTU1xcXF06dPTyaT+/fvfzft16FDh9rb22tra7ds2dLe3p42Ns93Hjh4qK+r/ZdllZ+dWnrlI7GvPLzQ7+2fZyy85P75P531ZlfH0YOH3oN56NChtra29evX79mz5+jRo+/tYBWQwKFDh9asWXPw4MHDhw8HbEurPxE4cuRIS0vLunXreAhInRNtbW1bt26trq5ub28/dGjQM5TUARVY36NHj+7evXv9+vVtbW3wFxl+e3v75s2b6+rqeAgMy//gwYPxePz555+/7777UKxhXr67bUKx3Phllq0Vq66u7vvf//7nP//5qqqq7u7uurq6lpaWG2+88f777z9x4sTll19+9OhRpdTs2bMnTJhgzvV9+/ZNPvl12WWXTZo0qaWlpba29u20X/X19Zs3b161atW6desaGhrq6+vThufzzrr6+u1bN8+av+LWJ+fd88yCu58u83u755kF4349/+E5i7dubhiMub6+vqGhYfny5VVVVZs2bcpnxKP4e6uvr1+6dGkhn/+y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KNbpPArrHoolPm8US3AEKJYgfNMaxTIowi9QLCtzFMuKyCUAxXKhl1Gufntqy5Yt48ePv/POO7/61a8uWbKkr6/vO9/5ztixY6+++urly5crpZYsWXLVVVeNHTv2e9/7XldX12DLisfjSqk5c+bMmDFDKaXvpumtOzY2Nmp/G2xrabLycpdRrPePK724pPz8opjf20VTyj961/yv/d81A56cSBqGmnlNTU17e/vgUZoAFgEIoFgBII/UQj8EUKyR+ATYrkfQ2tq6devWlA9KBOhOC80fxRI8E/QImpubt2/fzg/iYQehFau0tHTatGmZvLwctggbRyKAYo1ExvN240XPPvvsnXfe+corr9x4441KqUWLFl1//fVKqeuuuy4WiymlfvzjHz/zzDNDfyL+13/91yOPPDJ0+0gHun379tbW1pH2Fsj2gY9gKnVf2ea/uK30/OJF502K+b19sqj8g3fMv/bJt4blWVtbe+zYsWF3sTEMgcrKyjCN6DIsgePHj9fU1Ay7i41hCLzzzjuNjY1hetFlKIGOjo66urqh29kSjMDevXt37NgRrN2Z2KisrGzq1KkolvfZoVjekQ5TUL+t9Pbbb//gBz/48pe/vGvXrilTpsyePVsptXv37m984xu7du265pprDh8+rJSaPXv2xIkTzacHT5w40djYeOjQoUcfffTBBx9USrW1tR1L+9XZ2dnb27tp06ampqYTJ050dnamDc/nnW0dnSrRO6Os9uLJpZ9/IPbZ6Qv93j53f+wzU+b/8OmVid6ejkGcOzs7e3p6Kioq9u/f393dnc+IR/H31tnZuW7duo6Ojq6urlF8mHl7aN3d3QcOHNi4cWNPT08hPwtJDbizs/PEiRM7duyor6/v7e1lBOEH0d3d/c4771RUVBT4D+Lw5HVH/RBobGxsaGjgITDsFDo6OpRSL7/8Mu9iDfPa3XkTiuWMMIMC+t3qo0ePbty4sbi4+Omnny4qKnruueeUUrt27RpJsfQbXy0tLT/72c9++tOffvazn50wYcLOnTsrKiqqbV+1tbUrVqxYvXp1bW2tLTaf91dWVTXU1/52/vIJT8+797kFJbPL/N7unV026Zn5v3z59fq6mqqq00jW1tYuXbp0w4YNNTU1p+3gTigCVVVVS5YsqUoZTKju9KmpqdmwYcPSpUt5CEidDLW1tWvWrHnzzTcL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ZRAAARAAARAAARAAARAAARCQEoBiSWmgDAIgAAIgAAIgAAIgAAIgAAJcBKBYXPhQGQRAAARAAARAAARAAARAAASkBKBYUhoogwAIgAAIgAAIgAAIgAAIgAAXASgWFz5UBgEQAAEQAAEQAAEQAAEQAAEpASiWlAbKIAACIAACIAACIAACIAACIMBFAIrFhQ+VQQAEQAAEQAAEQAAEQAAEQEBKAIolpYEyCIAACIAACIAACIAACIAACHARgGJx4UNlEAABEAABEAABEAABEAABEJASgGJJaaAMAiAAAiAAAiAAAiAAAiAAAlwEoFhc+FAZBEAABEAABEAABEAABEAABKQEoFhSGiiDAAiAAAiAAAiAAAiAAAiAABcBKBYXPlQGARAAARAAARAAARAAARAAASkBKJaUBsogAAIgAAIgAAIgAAIgAAIgwEUAisWFD5VBAARAAARAAARAAARAAARAQEoAiiWlgTIIgAAIgAAIgAAIgAAIgAAIcBGAYnHhQ2UQAAEQAAEQAAEQAAEQAAEQkBKAYklpoAwCIAACIAACIAACIAACIAACXASgWFz4UBkEQAAEQAAEQAAEQAAEQAAEpASgWFIaKIMACIAACIAACIAACIAACIAAFwEoFhc+VAYBEAABEAABEAABEAABEAABKQEolpQGyiAAAiAAAiAAAiAAAiAAAiDARQCKxYUPlUEABEAABEAABEAABEAABEBASgCKJaWBMgiAAAiAAAiAAAiAAAiAAAhwEYBiceFDZRAAARAAARAAARAAARAAARCQEoBiSWmgDAIgAAIgAAIgAAIgAAIgAAJcBKBYXPhQGQRAAARAAARAAARAAARAAASkBKBYUhoogwAIgAAIgAAIgAAIgAAIgAAXgf8PbI0Fwry3/fwAAAAASUVORK5CYII="
    }
   },
   "cell_type": "markdown",
   "id": "51926611",
   "metadata": {},
   "source": [
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "1ab8b8bd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data_date</th>\n",
       "      <th>secucode</th>\n",
       "      <th>daily_return</th>\n",
       "      <th>mv</th>\n",
       "      <th>free_mv</th>\n",
       "      <th>turnover</th>\n",
       "      <th>ind_code</th>\n",
       "      <th>size</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>334461</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000001.SZ</td>\n",
       "      <td>0.001619</td>\n",
       "      <td>2.123980e+07</td>\n",
       "      <td>2.123960e+07</td>\n",
       "      <td>0.004936</td>\n",
       "      <td>480000</td>\n",
       "      <td>16.871387</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>334462</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000002.SZ</td>\n",
       "      <td>0.006711</td>\n",
       "      <td>2.625533e+07</td>\n",
       "      <td>2.623096e+07</td>\n",
       "      <td>0.000961</td>\n",
       "      <td>430000</td>\n",
       "      <td>17.083380</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>334463</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000004.SZ</td>\n",
       "      <td>0.087059</td>\n",
       "      <td>1.939861e+05</td>\n",
       "      <td>1.915766e+05</td>\n",
       "      <td>0.007673</td>\n",
       "      <td>370000</td>\n",
       "      <td>12.175542</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>334464</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000005.SZ</td>\n",
       "      <td>0.019802</td>\n",
       "      <td>3.270879e+05</td>\n",
       "      <td>3.269054e+05</td>\n",
       "      <td>0.014683</td>\n",
       "      <td>410000</td>\n",
       "      <td>12.697984</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>334465</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000006.SZ</td>\n",
       "      <td>0.045372</td>\n",
       "      <td>7.775971e+05</td>\n",
       "      <td>7.763248e+05</td>\n",
       "      <td>0.020896</td>\n",
       "      <td>430000</td>\n",
       "      <td>13.563964</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>338036</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603991.SH</td>\n",
       "      <td>0.035249</td>\n",
       "      <td>1.422873e+05</td>\n",
       "      <td>7.841965e+04</td>\n",
       "      <td>0.006144</td>\n",
       "      <td>220000</td>\n",
       "      <td>11.865604</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>338037</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603993.SH</td>\n",
       "      <td>0.015464</td>\n",
       "      <td>6.960314e+06</td>\n",
       "      <td>6.960314e+06</td>\n",
       "      <td>0.007321</td>\n",
       "      <td>240000</td>\n",
       "      <td>15.755735</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>338038</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603997.SH</td>\n",
       "      <td>0.030383</td>\n",
       "      <td>4.987423e+05</td>\n",
       "      <td>4.928593e+05</td>\n",
       "      <td>0.007838</td>\n",
       "      <td>280000</td>\n",
       "      <td>13.119845</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>338039</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603998.SH</td>\n",
       "      <td>0.037820</td>\n",
       "      <td>4.073690e+05</td>\n",
       "      <td>3.967085e+05</td>\n",
       "      <td>0.064843</td>\n",
       "      <td>370000</td>\n",
       "      <td>12.917475</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>338040</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603999.SH</td>\n",
       "      <td>0.033028</td>\n",
       "      <td>3.242880e+05</td>\n",
       "      <td>3.242880e+05</td>\n",
       "      <td>0.012597</td>\n",
       "      <td>720000</td>\n",
       "      <td>12.689387</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3580 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         data_date   secucode  daily_return            mv       free_mv  \\\n",
       "334461  2019-05-27  000001.SZ      0.001619  2.123980e+07  2.123960e+07   \n",
       "334462  2019-05-27  000002.SZ      0.006711  2.625533e+07  2.623096e+07   \n",
       "334463  2019-05-27  000004.SZ      0.087059  1.939861e+05  1.915766e+05   \n",
       "334464  2019-05-27  000005.SZ      0.019802  3.270879e+05  3.269054e+05   \n",
       "334465  2019-05-27  000006.SZ      0.045372  7.775971e+05  7.763248e+05   \n",
       "...            ...        ...           ...           ...           ...   \n",
       "338036  2019-05-27  603991.SH      0.035249  1.422873e+05  7.841965e+04   \n",
       "338037  2019-05-27  603993.SH      0.015464  6.960314e+06  6.960314e+06   \n",
       "338038  2019-05-27  603997.SH      0.030383  4.987423e+05  4.928593e+05   \n",
       "338039  2019-05-27  603998.SH      0.037820  4.073690e+05  3.967085e+05   \n",
       "338040  2019-05-27  603999.SH      0.033028  3.242880e+05  3.242880e+05   \n",
       "\n",
       "        turnover  ind_code       size  \n",
       "334461  0.004936    480000  16.871387  \n",
       "334462  0.000961    430000  17.083380  \n",
       "334463  0.007673    370000  12.175542  \n",
       "334464  0.014683    410000  12.697984  \n",
       "334465  0.020896    430000  13.563964  \n",
       "...          ...       ...        ...  \n",
       "338036  0.006144    220000  11.865604  \n",
       "338037  0.007321    240000  15.755735  \n",
       "338038  0.007838    280000  13.119845  \n",
       "338039  0.064843    370000  12.917475  \n",
       "338040  0.012597    720000  12.689387  \n",
       "\n",
       "[3580 rows x 8 columns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 读取 2019 年的交易数据\n",
    "trading_data_2019 = pd.read_csv('./data/2019_trading_data.csv')\n",
    "# 筛选出 2019 年 5 月 27 日的交易数据\n",
    "sub_trading_data = trading_data_2019.query(\"data_date=='2019-05-27'\")\n",
    "# 对市值进行对数处理（为数据添加 size 列，size 等于市值的对数）\n",
    "sub_trading_data['size'] = np.log(sub_trading_data['mv'])\n",
    "sub_trading_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "1458b721",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义过滤极端值的函数\n",
    "def filter_extreme_by_sigma(series, n=3):\n",
    "    # 计算均值\n",
    "    mean = series.mean()\n",
    "    # 计算方差\n",
    "    std = series.std()\n",
    "    # 计算上下限的值\n",
    "    max_value = mean + n * std\n",
    "    min_value = mean - n * std\n",
    "    return np.clip(series, min_value, max_value)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "3428a053",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data_date</th>\n",
       "      <th>secucode</th>\n",
       "      <th>daily_return</th>\n",
       "      <th>mv</th>\n",
       "      <th>free_mv</th>\n",
       "      <th>turnover</th>\n",
       "      <th>ind_code</th>\n",
       "      <th>size</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>334461</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000001.SZ</td>\n",
       "      <td>0.001619</td>\n",
       "      <td>2.123980e+07</td>\n",
       "      <td>2.123960e+07</td>\n",
       "      <td>0.004936</td>\n",
       "      <td>480000</td>\n",
       "      <td>16.371126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>334462</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000002.SZ</td>\n",
       "      <td>0.006711</td>\n",
       "      <td>2.625533e+07</td>\n",
       "      <td>2.623096e+07</td>\n",
       "      <td>0.000961</td>\n",
       "      <td>430000</td>\n",
       "      <td>16.371126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>334463</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000004.SZ</td>\n",
       "      <td>0.087059</td>\n",
       "      <td>1.939861e+05</td>\n",
       "      <td>1.915766e+05</td>\n",
       "      <td>0.007673</td>\n",
       "      <td>370000</td>\n",
       "      <td>12.175542</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>334464</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000005.SZ</td>\n",
       "      <td>0.019802</td>\n",
       "      <td>3.270879e+05</td>\n",
       "      <td>3.269054e+05</td>\n",
       "      <td>0.014683</td>\n",
       "      <td>410000</td>\n",
       "      <td>12.697984</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>334465</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000006.SZ</td>\n",
       "      <td>0.045372</td>\n",
       "      <td>7.775971e+05</td>\n",
       "      <td>7.763248e+05</td>\n",
       "      <td>0.020896</td>\n",
       "      <td>430000</td>\n",
       "      <td>13.563964</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>338036</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603991.SH</td>\n",
       "      <td>0.035249</td>\n",
       "      <td>1.422873e+05</td>\n",
       "      <td>7.841965e+04</td>\n",
       "      <td>0.006144</td>\n",
       "      <td>220000</td>\n",
       "      <td>11.865604</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>338037</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603993.SH</td>\n",
       "      <td>0.015464</td>\n",
       "      <td>6.960314e+06</td>\n",
       "      <td>6.960314e+06</td>\n",
       "      <td>0.007321</td>\n",
       "      <td>240000</td>\n",
       "      <td>15.755735</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>338038</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603997.SH</td>\n",
       "      <td>0.030383</td>\n",
       "      <td>4.987423e+05</td>\n",
       "      <td>4.928593e+05</td>\n",
       "      <td>0.007838</td>\n",
       "      <td>280000</td>\n",
       "      <td>13.119845</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>338039</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603998.SH</td>\n",
       "      <td>0.037820</td>\n",
       "      <td>4.073690e+05</td>\n",
       "      <td>3.967085e+05</td>\n",
       "      <td>0.064843</td>\n",
       "      <td>370000</td>\n",
       "      <td>12.917475</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>338040</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603999.SH</td>\n",
       "      <td>0.033028</td>\n",
       "      <td>3.242880e+05</td>\n",
       "      <td>3.242880e+05</td>\n",
       "      <td>0.012597</td>\n",
       "      <td>720000</td>\n",
       "      <td>12.689387</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3580 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         data_date   secucode  daily_return            mv       free_mv  \\\n",
       "334461  2019-05-27  000001.SZ      0.001619  2.123980e+07  2.123960e+07   \n",
       "334462  2019-05-27  000002.SZ      0.006711  2.625533e+07  2.623096e+07   \n",
       "334463  2019-05-27  000004.SZ      0.087059  1.939861e+05  1.915766e+05   \n",
       "334464  2019-05-27  000005.SZ      0.019802  3.270879e+05  3.269054e+05   \n",
       "334465  2019-05-27  000006.SZ      0.045372  7.775971e+05  7.763248e+05   \n",
       "...            ...        ...           ...           ...           ...   \n",
       "338036  2019-05-27  603991.SH      0.035249  1.422873e+05  7.841965e+04   \n",
       "338037  2019-05-27  603993.SH      0.015464  6.960314e+06  6.960314e+06   \n",
       "338038  2019-05-27  603997.SH      0.030383  4.987423e+05  4.928593e+05   \n",
       "338039  2019-05-27  603998.SH      0.037820  4.073690e+05  3.967085e+05   \n",
       "338040  2019-05-27  603999.SH      0.033028  3.242880e+05  3.242880e+05   \n",
       "\n",
       "        turnover  ind_code       size  \n",
       "334461  0.004936    480000  16.371126  \n",
       "334462  0.000961    430000  16.371126  \n",
       "334463  0.007673    370000  12.175542  \n",
       "334464  0.014683    410000  12.697984  \n",
       "334465  0.020896    430000  13.563964  \n",
       "...          ...       ...        ...  \n",
       "338036  0.006144    220000  11.865604  \n",
       "338037  0.007321    240000  15.755735  \n",
       "338038  0.007838    280000  13.119845  \n",
       "338039  0.064843    370000  12.917475  \n",
       "338040  0.012597    720000  12.689387  \n",
       "\n",
       "[3580 rows x 8 columns]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 3sigma压缩（对 size 列进行过滤极端值处理）\n",
    "sub_trading_data['size'] = filter_extreme_by_sigma(sub_trading_data['size'])\n",
    "sub_trading_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "48078a1e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data_date</th>\n",
       "      <th>secucode</th>\n",
       "      <th>daily_return</th>\n",
       "      <th>mv</th>\n",
       "      <th>free_mv</th>\n",
       "      <th>turnover</th>\n",
       "      <th>ind_code</th>\n",
       "      <th>size</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>334461</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000001.SZ</td>\n",
       "      <td>0.001619</td>\n",
       "      <td>2.123980e+07</td>\n",
       "      <td>2.123960e+07</td>\n",
       "      <td>0.004936</td>\n",
       "      <td>480000</td>\n",
       "      <td>3.128591</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>334462</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000002.SZ</td>\n",
       "      <td>0.006711</td>\n",
       "      <td>2.625533e+07</td>\n",
       "      <td>2.623096e+07</td>\n",
       "      <td>0.000961</td>\n",
       "      <td>430000</td>\n",
       "      <td>3.128591</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>334463</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000004.SZ</td>\n",
       "      <td>0.087059</td>\n",
       "      <td>1.939861e+05</td>\n",
       "      <td>1.915766e+05</td>\n",
       "      <td>0.007673</td>\n",
       "      <td>370000</td>\n",
       "      <td>-1.171737</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>334464</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000005.SZ</td>\n",
       "      <td>0.019802</td>\n",
       "      <td>3.270879e+05</td>\n",
       "      <td>3.269054e+05</td>\n",
       "      <td>0.014683</td>\n",
       "      <td>410000</td>\n",
       "      <td>-0.636252</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>334465</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000006.SZ</td>\n",
       "      <td>0.045372</td>\n",
       "      <td>7.775971e+05</td>\n",
       "      <td>7.763248e+05</td>\n",
       "      <td>0.020896</td>\n",
       "      <td>430000</td>\n",
       "      <td>0.251347</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>338036</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603991.SH</td>\n",
       "      <td>0.035249</td>\n",
       "      <td>1.422873e+05</td>\n",
       "      <td>7.841965e+04</td>\n",
       "      <td>0.006144</td>\n",
       "      <td>220000</td>\n",
       "      <td>-1.489413</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>338037</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603993.SH</td>\n",
       "      <td>0.015464</td>\n",
       "      <td>6.960314e+06</td>\n",
       "      <td>6.960314e+06</td>\n",
       "      <td>0.007321</td>\n",
       "      <td>240000</td>\n",
       "      <td>2.497836</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>338038</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603997.SH</td>\n",
       "      <td>0.030383</td>\n",
       "      <td>4.987423e+05</td>\n",
       "      <td>4.928593e+05</td>\n",
       "      <td>0.007838</td>\n",
       "      <td>280000</td>\n",
       "      <td>-0.203860</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>338039</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603998.SH</td>\n",
       "      <td>0.037820</td>\n",
       "      <td>4.073690e+05</td>\n",
       "      <td>3.967085e+05</td>\n",
       "      <td>0.064843</td>\n",
       "      <td>370000</td>\n",
       "      <td>-0.411282</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>338040</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603999.SH</td>\n",
       "      <td>0.033028</td>\n",
       "      <td>3.242880e+05</td>\n",
       "      <td>3.242880e+05</td>\n",
       "      <td>0.012597</td>\n",
       "      <td>720000</td>\n",
       "      <td>-0.645064</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3580 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         data_date   secucode  daily_return            mv       free_mv  \\\n",
       "334461  2019-05-27  000001.SZ      0.001619  2.123980e+07  2.123960e+07   \n",
       "334462  2019-05-27  000002.SZ      0.006711  2.625533e+07  2.623096e+07   \n",
       "334463  2019-05-27  000004.SZ      0.087059  1.939861e+05  1.915766e+05   \n",
       "334464  2019-05-27  000005.SZ      0.019802  3.270879e+05  3.269054e+05   \n",
       "334465  2019-05-27  000006.SZ      0.045372  7.775971e+05  7.763248e+05   \n",
       "...            ...        ...           ...           ...           ...   \n",
       "338036  2019-05-27  603991.SH      0.035249  1.422873e+05  7.841965e+04   \n",
       "338037  2019-05-27  603993.SH      0.015464  6.960314e+06  6.960314e+06   \n",
       "338038  2019-05-27  603997.SH      0.030383  4.987423e+05  4.928593e+05   \n",
       "338039  2019-05-27  603998.SH      0.037820  4.073690e+05  3.967085e+05   \n",
       "338040  2019-05-27  603999.SH      0.033028  3.242880e+05  3.242880e+05   \n",
       "\n",
       "        turnover  ind_code      size  \n",
       "334461  0.004936    480000  3.128591  \n",
       "334462  0.000961    430000  3.128591  \n",
       "334463  0.007673    370000 -1.171737  \n",
       "334464  0.014683    410000 -0.636252  \n",
       "334465  0.020896    430000  0.251347  \n",
       "...          ...       ...       ...  \n",
       "338036  0.006144    220000 -1.489413  \n",
       "338037  0.007321    240000  2.497836  \n",
       "338038  0.007838    280000 -0.203860  \n",
       "338039  0.064843    370000 -0.411282  \n",
       "338040  0.012597    720000 -0.645064  \n",
       "\n",
       "[3580 rows x 8 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 标准化（对 size 列进行标准化处理）\n",
    "sub_trading_data['size'] = standard_normalize(sub_trading_data['size'])\n",
    "sub_trading_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "af4f63da",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义行业和市值中性化的函数\n",
    "def industry_and_size_neutralization(factor_df, factor_name):\n",
    "    # 执行 OLS 回归，消除行业和市值的影响\n",
    "    result = sm.OLS(factor_df[factor_name], factor_df[list(factor_df.ind_code.unique()) + ['size']], hasconst=False).fit()\n",
    "    # 返回回归残差\n",
    "    return result.resid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "43900bdb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data_date</th>\n",
       "      <th>secucode</th>\n",
       "      <th>daily_return</th>\n",
       "      <th>mv</th>\n",
       "      <th>free_mv</th>\n",
       "      <th>turnover</th>\n",
       "      <th>ind_code</th>\n",
       "      <th>size</th>\n",
       "      <th>110000</th>\n",
       "      <th>210000</th>\n",
       "      <th>...</th>\n",
       "      <th>610000</th>\n",
       "      <th>620000</th>\n",
       "      <th>630000</th>\n",
       "      <th>640000</th>\n",
       "      <th>650000</th>\n",
       "      <th>710000</th>\n",
       "      <th>720000</th>\n",
       "      <th>730000</th>\n",
       "      <th>roe</th>\n",
       "      <th>roe_neuted</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000001.SZ</td>\n",
       "      <td>0.001619</td>\n",
       "      <td>2.123980e+07</td>\n",
       "      <td>2.123960e+07</td>\n",
       "      <td>0.004936</td>\n",
       "      <td>480000</td>\n",
       "      <td>3.128591</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.353504</td>\n",
       "      <td>-0.275336</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000002.SZ</td>\n",
       "      <td>0.006711</td>\n",
       "      <td>2.625533e+07</td>\n",
       "      <td>2.623096e+07</td>\n",
       "      <td>0.000961</td>\n",
       "      <td>430000</td>\n",
       "      <td>3.128591</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.510929</td>\n",
       "      <td>-1.229165</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000004.SZ</td>\n",
       "      <td>0.087059</td>\n",
       "      <td>1.939861e+05</td>\n",
       "      <td>1.915766e+05</td>\n",
       "      <td>0.007673</td>\n",
       "      <td>370000</td>\n",
       "      <td>-1.171737</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1.008377</td>\n",
       "      <td>1.054107</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000005.SZ</td>\n",
       "      <td>0.019802</td>\n",
       "      <td>3.270879e+05</td>\n",
       "      <td>3.269054e+05</td>\n",
       "      <td>0.014683</td>\n",
       "      <td>410000</td>\n",
       "      <td>-0.636252</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.780362</td>\n",
       "      <td>-0.664734</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>000006.SZ</td>\n",
       "      <td>0.045372</td>\n",
       "      <td>7.775971e+05</td>\n",
       "      <td>7.763248e+05</td>\n",
       "      <td>0.020896</td>\n",
       "      <td>430000</td>\n",
       "      <td>0.251347</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.118005</td>\n",
       "      <td>-0.144089</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3575</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603991.SH</td>\n",
       "      <td>0.035249</td>\n",
       "      <td>1.422873e+05</td>\n",
       "      <td>7.841965e+04</td>\n",
       "      <td>0.006144</td>\n",
       "      <td>220000</td>\n",
       "      <td>-1.489413</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.499702</td>\n",
       "      <td>-0.205007</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3576</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603993.SH</td>\n",
       "      <td>0.015464</td>\n",
       "      <td>6.960314e+06</td>\n",
       "      <td>6.960314e+06</td>\n",
       "      <td>0.007321</td>\n",
       "      <td>240000</td>\n",
       "      <td>2.497836</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.484734</td>\n",
       "      <td>-0.767959</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3577</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603997.SH</td>\n",
       "      <td>0.030383</td>\n",
       "      <td>4.987423e+05</td>\n",
       "      <td>4.928593e+05</td>\n",
       "      <td>0.007838</td>\n",
       "      <td>280000</td>\n",
       "      <td>-0.203860</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.387183</td>\n",
       "      <td>0.407444</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3578</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603998.SH</td>\n",
       "      <td>0.037820</td>\n",
       "      <td>4.073690e+05</td>\n",
       "      <td>3.967085e+05</td>\n",
       "      <td>0.064843</td>\n",
       "      <td>370000</td>\n",
       "      <td>-0.411282</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.057875</td>\n",
       "      <td>-0.079330</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3579</th>\n",
       "      <td>2019-05-27</td>\n",
       "      <td>603999.SH</td>\n",
       "      <td>0.033028</td>\n",
       "      <td>3.242880e+05</td>\n",
       "      <td>3.242880e+05</td>\n",
       "      <td>0.012597</td>\n",
       "      <td>720000</td>\n",
       "      <td>-0.645064</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.698035</td>\n",
       "      <td>-0.451074</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3580 rows × 38 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       data_date   secucode  daily_return            mv       free_mv  \\\n",
       "0     2019-05-27  000001.SZ      0.001619  2.123980e+07  2.123960e+07   \n",
       "1     2019-05-27  000002.SZ      0.006711  2.625533e+07  2.623096e+07   \n",
       "2     2019-05-27  000004.SZ      0.087059  1.939861e+05  1.915766e+05   \n",
       "3     2019-05-27  000005.SZ      0.019802  3.270879e+05  3.269054e+05   \n",
       "4     2019-05-27  000006.SZ      0.045372  7.775971e+05  7.763248e+05   \n",
       "...          ...        ...           ...           ...           ...   \n",
       "3575  2019-05-27  603991.SH      0.035249  1.422873e+05  7.841965e+04   \n",
       "3576  2019-05-27  603993.SH      0.015464  6.960314e+06  6.960314e+06   \n",
       "3577  2019-05-27  603997.SH      0.030383  4.987423e+05  4.928593e+05   \n",
       "3578  2019-05-27  603998.SH      0.037820  4.073690e+05  3.967085e+05   \n",
       "3579  2019-05-27  603999.SH      0.033028  3.242880e+05  3.242880e+05   \n",
       "\n",
       "      turnover  ind_code      size  110000  210000  ...  610000  620000  \\\n",
       "0     0.004936    480000  3.128591       0       0  ...       0       0   \n",
       "1     0.000961    430000  3.128591       0       0  ...       0       0   \n",
       "2     0.007673    370000 -1.171737       0       0  ...       0       0   \n",
       "3     0.014683    410000 -0.636252       0       0  ...       0       0   \n",
       "4     0.020896    430000  0.251347       0       0  ...       0       0   \n",
       "...        ...       ...       ...     ...     ...  ...     ...     ...   \n",
       "3575  0.006144    220000 -1.489413       0       0  ...       0       0   \n",
       "3576  0.007321    240000  2.497836       0       0  ...       0       0   \n",
       "3577  0.007838    280000 -0.203860       0       0  ...       0       0   \n",
       "3578  0.064843    370000 -0.411282       0       0  ...       0       0   \n",
       "3579  0.012597    720000 -0.645064       0       0  ...       0       0   \n",
       "\n",
       "      630000  640000  650000  710000  720000  730000       roe  roe_neuted  \n",
       "0          0       0       0       0       0       0  0.353504   -0.275336  \n",
       "1          0       0       0       0       0       0 -0.510929   -1.229165  \n",
       "2          0       0       0       0       0       0  1.008377    1.054107  \n",
       "3          0       0       0       0       0       0 -0.780362   -0.664734  \n",
       "4          0       0       0       0       0       0 -0.118005   -0.144089  \n",
       "...      ...     ...     ...     ...     ...     ...       ...         ...  \n",
       "3575       0       0       0       0       0       0 -0.499702   -0.205007  \n",
       "3576       0       0       0       0       0       0 -0.484734   -0.767959  \n",
       "3577       0       0       0       0       0       0  0.387183    0.407444  \n",
       "3578       0       0       0       0       0       0  0.057875   -0.079330  \n",
       "3579       0       0       0       0       1       0 -0.698035   -0.451074  \n",
       "\n",
       "[3580 rows x 38 columns]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 市值+对应的行业情况（添加行业哑变量）\n",
    "sub_trading_data = pd.concat([sub_trading_data, pd.get_dummies(sub_trading_data['ind_code'])], axis=1)\n",
    "# 添加上roe信息（合并 ROE 因子数据）\n",
    "roe_neuted_df = pd.merge(sub_trading_data, roe_factor[['secucode', 'roe']])\n",
    "# 进行行业和市值的中性化（对 ROE 进行行业和市值中性化处理）\n",
    "roe_neuted_df['roe_neuted'] = industry_and_size_neutralization(roe_neuted_df, 'roe')\n",
    "roe_neuted_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "29220df5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1296x648 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 中性化后的roe虽然还是右偏，但是比较接近正态分布的水平了（绘制 ROE 中性化后的直方图）\n",
    "roe_neuted_df['roe_neuted'].hist(bins=100, figsize=(18, 9))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f0476026",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fcfe6877",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "29ead2bb",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
